ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

アプリケーション・コンテキストの受渡し

XLA関数ではありませんが、ログに対するライターでttApplicationContextプロシージャをコールして、アプリケーションに関連付けられているバイナリ・データをXLAリーダーに渡すことができます。ttApplicationContextプロシージャは、現在のトランザクションが生成する次の更新レコードに返す1つのVARBINARY値を指定します。XLAを使って更新を読み込むアプリケーションでは、「NOT INLINE可変長列データの読込み」で説明されている方法で、この値へのポインタを取得できます。


注意: コンテキスト値は1つの更新レコードのみに適用され、適用後に再設定されます。同じコンテキスト値を複数の更新に適用する場合は、各更新の前に再設定する必要があります。

コンテキストを設定するには、次の手順を実行します。

  1. ttApplicationContext関数を起動するために2つのプログラム変数を宣言します。contextBufferは、最も長いアプリケーション・コンテキストを格納できる十分な大きさを持つように宣言されたCHAR配列です。contextBufferLenは、INTEGER型の変数で、ttApplicationContextへの各コールでコンテキストの実際の長さを伝えるために使用されます。
  2. ttApplicationContext組込みプロシージャのコンパイル済の起動によって文ハンドルを初期化します。
  3. rc = SQLPrepare(hstmt, "call ttApplicationContext(?)", SQL_NTS);

    rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY,

                         SQL_VARBINARY, 0, 0, &contextBuffer,

                         sizeof contextBuffer, &contextBufferLen);

  4. アプリケーション・コンテキストを後で設定する必要がある場合は、コンテキスト値をcontextBufferにコピーし、コンテキストの長さをcontextBufferLenに割り当て、次のコールを使用してttApplicationContextを起動します。
  5. rc = SQLExecute(hstmt);

    トランザクションは、SQLTransactへの通常のコールでコミットされます。

    rc = SQLTransact(NULL, hdbc, SQL_COMMIT);


    注意: ttApplicationContextをコールした後にSQL処理に失敗すると、コンテキストが次の処理に渡されず、失われる可能性があります。このような問題が発生した場合は、アプリケーションで、次のSQL処理の前にttApplicationContextを再度コールできます。